package com.webtest.demo;

import static org.testng.Assert.assertEquals;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.webtest.core.BaseTest;
import com.webtest.dataprovider.NSDataProvider;

public class AutoTestWork extends BaseTest {

	/**
	 * 登录操作 在后台实现登录 此后的每个测试用例执行前都会先执行此代码
	 */
	@BeforeMethod
	public void login() {
		webtest.open("");
//		这个身份信息是在初始化网站时所设置：
		webtest.type("name=login_name", "qihaoling");
		webtest.type("name=login_pass", "123456");
		webtest.click("xpath=//button[@class='btn btn-primary px-4']");

		System.out.println("成功登录");
	}

	/**
	 * 测试用例1 1、进入后台进行可视化编辑 2、修改产品展示内容
	 */
	@Test(priority = 1)
	public void test_modify1() {
		webtest.click("xpath=//i[@class='icon wb-pencil']");
//		点击修改图标后 增加内容：
		webtest.type("class=form-control input-sm", "1");
//		点击确定
		webtest.click("xpath=//button[@class='btn btn-primary btn-xs editable-submit']");
	}

	/**
	 * 测试用例2 1、登录 2、进入传统后台 3、点击内容管理 - 产品模块 4、选中一个产品进行放入回收站
	 */
	@Test(priority = 2)
	public void test_delete1() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
//		产品模块
		webtest.click(
				"xpath=//i[@class='list-group-item d-flex align-items-center justify-content-between py-2 pr-2 pl-2 active']");
//		随机选择一个产品
		webtest.click("xpath=//input[@value='7']");
//		点击删除(此操作需要先使滚动条到最下方
		webtest.runJs("window.scrollTo(0,2000)");
		webtest.click("xpath=//button[@class='btn btn-default]");
//		放入回收站删除
		webtest.click("xpath=//button[@class='btn btn-sm mr-1 btn-primary btn-table-del-recycle']");
	}

	/**
	 * 测试用例3 1、进入传统后台 2、内容管理-按模块分类-简介模块 3、修改简介
	 */
	@Test(priority = 3)
	public void test_modify2() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link= 按模块分类");
		webtest.click("partLink=简介模块");

		webtest.click("xpath=//button[@class='btn btn-sm btn-primary']");
//		进入弹出的修改框
		webtest.enterFrameLocator("id=ueditor_0");
		webtest.type("xpath=.//p[5]", "新增文本~~");

		webtest.click("xpath=//button[@class='btn btn-primary']");
		webtest.leaveFrame();
	}

	/**
	 * 测试用例4 1、进入传统后台 2、内容管理-关于我们 3、上传附件
	 * 
	 * @throws InterruptedException
	 */
	@Test(priority = 4)
	public void test_upload_attach() throws InterruptedException {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("xpath=//div[@class='edui-box edui-icon edui-default']");

		webtest.enterFrameLocator("id=edui807_body");
		webtest.moveToElement("xpath=//div[@class='webuploader-pick']");
		webtest.type("xpath=//div[@class='webuploader-pick']", "E:\\demo\\pic\\1");

		webtest.leaveFrame();
	}

	/**
	 * 测试用例5 1、 进入传统后台 2、内容管理-关于我们 3、上传在线附件
	 */
	@Test(priority = 5)
	public void test_upload_attach2() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("xpath=//div[@class='edui-box edui-icon edui-default']");

		webtest.enterFrameLocator("id=edui807_body");
		webtest.click("xpath=//span[@class='tab']");
		webtest.click("xpath=//img[starts-with(@src,’span’)");
		webtest.leaveFrame();
	}

	/**
	 * 测试用例6
	 */
	@Test(priority = 6, dataProvider = "number", dataProviderClass = NSDataProvider.class)
	public void test_modify3(String positive, String negative) {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
//		产品模块
		webtest.click(
				"xpath=//i[@class='list-group-item d-flex align-items-center justify-content-between py-2 pr-2 pl-2 active']");
//		随机选择一个产品修改其排序顺序(使用数据驱动 获取正值
		webtest.type("xpath=//input[@name='no_order-2'", positive);
	}

	/**
	 * 测试用例7
	 */
	@Test(priority = 7, dataProvider = "number", dataProviderClass = NSDataProvider.class)
	public void test_modify4(String positive, String negative) {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
//		产品模块
		webtest.click(
				"xpath=//i[@class='list-group-item d-flex align-items-center justify-content-between py-2 pr-2 pl-2 active']");
//		随机选择一个产品修改其排序顺序(使用数据驱动 获取负值
		webtest.type("xpath=//input[@name='no_order-5'", negative);
	}

	/**
	 * 测试用例8  置顶产品
	 */
	@Test(priority = 8)
	public void modify_top1() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
		// 点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
//		产品模块
		webtest.click(
				"xpath=//i[@class='list-group-item d-flex align-items-center justify-content-between py-2 pr-2 pl-2 active']");
//		随机选择一个产品
		webtest.click("xpath=//input[@value='8']");
//		点击置顶(此操作需要先使滚动条到最下方
		webtest.runJs("window.scrollTo(0,1500)");
		webtest.click("xpath=//button[@class='btn btn-default dropdown-toggle']");
		webtest.click("link=置顶");
		
	}

	/**
	 * 测试用例9 不选中产品进行置顶操作，查看是否弹窗
	 */
	@Test(priority = 9)
	public void modify_topNone() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
//		产品模块
		webtest.click(
				"xpath=//i[@class='list-group-item d-flex align-items-center justify-content-between py-2 pr-2 pl-2 active']");

//		点击置顶(此操作需要先使滚动条到最下方
		webtest.runJs("window.scrollTo(0,2100)");
		webtest.click("xpath=//button[@class='btn btn-default dropdown-toggle']");
		webtest.click("link=置顶");
		
		assertEquals(webtest.isDisplayed("xpath=//div[@class='error show']"), true);
	}

	/**
	 * 测试用例10   修改资料信息为空，查看是否能保存成功
	 */
	@Test(priority = 10)
	public void modify_none() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link=资料下载");
		
//		这里我们选中资料下的第2个进行编辑
		webtest.click("xpath=//button[@class='btn btn-sm btn-primary mr-1' and position()=2");
		webtest.enterFrameLocator("id=scrollbar-1673602793952");
//		清空必填项-标题
		webtest.typeAndClear("xpath=//[@class='form-control' and name='title']", "");
//		利用按钮中文字定位：
		webtest.click("xpath=//button[(text()='保存')");
		
		assertEquals(webtest.isDisplayed("xpath=//div[@class='success show']"), true);
	}

	/**
	 * 测试用例11  正常编辑简介信息，修改标题名
	 */
	@Test(priority = 11)
	public void modify_title_profile() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link=资料下载");
		
//		这里我们选中资料下的第2个进行编辑
		webtest.click("xpath=//button[@class='btn btn-sm btn-primary mr-1' and position()=2");
		webtest.enterFrameLocator("id=scrollbar-1673602793952");
//		修改标题~
		webtest.typeAndClear("xpath=//[@class='form-control' and name='title']", "今天修改！");
//		利用按钮中文字定位：
		webtest.click("xpath=//button[(text()='保存')");
		
		assertEquals(webtest.isDisplayed("xpath=//div[@class='success show']"), true);
	}

	/**
	 * 测试用例12 彻底删除资料
	 */
	@Test(priority = 12)
	public void delete_data() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link=资料下载");
		
//		这里我们选中资料下的第2个进行编辑
		webtest.click("xpath=//button[@class='btn btn-sm btn-primary mr-1' and position()=2");
		webtest.enterFrameLocator("id=scrollbar-1673602793952");
//		修改标题~
		webtest.typeAndClear("xpath=//input[@class='form-control' and name='title']", "今天修改！");
//		利用按钮中文字定位：
		webtest.click("xpath=//button[(text()='彻底删除')");
		
	}

	/**
	 * 测试用例13  导出简历
	 */
	@Test(priority = 13)
	public void export_resume() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link=加入我们");
		webtest.click("link=简历信息管理");
		
		webtest.click("link=导出简历");
		webtest.switchWindow(0);
	}

	/**
	 * 测试用例14 修改简历表单信息
	 */
	@Test(priority = 14)
	public void modify_resume() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link=加入我们");
		webtest.click("link=招聘系统配置");
		webtest.selectByVisibleText("xpath=//select[@name='wr_ok-163']", "否");
		
		webtest.runJs("window.scrollTo(0,2000)");
		webtest.click("xpath=//button[(text()='保存')");
	}

	/**
	 * 测试用例15 修改默认栏目
	 */
	@Test(priority = 15)
	public void default_column() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.selectByVisibleText("xpath=//select[@name='default_show_column']", "-在线留言");
		
		assertEquals(webtest.isDisplayed("xpath=//div[@class='success show']"), true);
	}

	/**
	 * 测试用例16 还原回收站中所有内容
	 */
	@Test(priority = 16)
	public void restore_content() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("xpath=//a[@class='btn-content-recycle text-content']");
		webtest.click("xpath=//input[@class='checkall-all custom-control-input']");
		
		webtest.click("xpath=//button[(text()='还原')");
	}

	/**
	 * 测试用例17 删除留言
	 */
	@Test(priority = 17)
	public void delete_leave() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link=关于我们");
		webtest.click("link=在线留言");
//		将第一个留言删除
		webtest.click("xpath=//button[@class='btn btn-sm btn-default ' and position()=1]");
//		确认删除
		webtest.alertAccept();
//		查看是否出现“操作成功”弹窗
		assertEquals(webtest.isDisplayed("xpath=//div[@class='success show']"), true);
	}

	/**
	 * 测试用例18 增加客户信息
	 */
	@Test(priority = 18,dataProvider = "content", dataProviderClass = NSDataProvider.class)
	public void add_content(String label,String title) {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入内容管理页面
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-manage']");
		webtest.click("link=客户案例");
		webtest.click("xpath=//div[@class='modal-content h-100'");
		webtest.selectByVisibleText("xpath=//select[@name='wr_ok-163']", label);
		webtest.type("xpath=input[@name='title']", title);
		webtest.click("xpath=//button[(text()='保存')");
		
	}

	/**
	 * 测试用例19 修改首页标题
	 */
	@Test(priority = 19)
	public void modify_title_index() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.type("xpath=//input[@class='form-control']", "我修改了标题~~");
		
		assertEquals(webtest.isDisplayed("xpath=//div[@class='success show']"), true);
	}

	/**
	 * 测试用例20 生成静态页面是否成功
	 */
	@Test(priority = 20)
	public void generate_page() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=静态页面设置");
		webtest.click("link=静态页面生成");
		webtest.click("link=生成所有页面");
//		如果出现生成失败 则判断为false 否则为true
		assertEquals(webtest.isDisplayed("partLink=生成失败"), false);
	}

	/**
	 * 测试用例21 修改友情链接为LOGO
	 */
	@Test(priority = 21)
	public void modify_link() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=友情链接");
//		这里点击排序中第一个进行编辑
		webtest.click("xpath=//button[@class='btn btn-primary btn-edit' and position()=1");
		webtest.click("id=link_type-1");
		
		webtest.click("xpath=//button[(text()='保存')");
	}

	/**
	 * 测试用例22  删除友情链接
	 */
	@Test(priority = 22)
	public void link_delete() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=友情链接");

		webtest.click("xpath=//button[@class='btn btn-default btn-delete ml-2' and position()=2");
		webtest.alertAccept();
	}

	/**
	 * 测试用例23 增加友情链接
	 */
	@Test(priority = 23, dataProvider = "link", dataProviderClass = NSDataProvider.class)
	public void add_link(String url,String title,String info) {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=友情链接");
		webtest.click("xpath=//button[text()='添加内容    ']");
		webtest.enterFrameLocator("xpath=//div[@class='modal-content h-100']");
//		这里我们填入非链接形式，查看是否可以保存
		webtest.type("xpath=//input[@name='weburl']", url);
		webtest.type("xpath=//input[@name='webname']", url);
		webtest.type("xpath=//input[@name='info']", info);
//		鼠标下滑
		webtest.runJs("window.scrollTo(0,900)");
		webtest.click("id=met_clumid_all-");
		webtest.click("xpath=//button[(text()='保存')");
	}

	/**
	 * 测试用例24  （缺少必填项）增加友情链接
	 */
	@Test(priority = 24)
	public void add_link_lack() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=友情链接");
		webtest.click("xpath=//button[text()='添加内容    ']");
		webtest.enterFrameLocator("xpath=//div[@class='modal-content h-100']");
//		这里我们填入非链接形式，查看是否可以保存
		webtest.type("xpath=//input[@name='weburl']", "https://www.baidu.com/");
		
		webtest.type("xpath=//input[@name='info']", "百度");
//		鼠标下滑
		webtest.runJs("window.scrollTo(0,900)");
		webtest.click("id=met_clumid_all-");
		webtest.click("xpath=//button[(text()='保存')");
//		增加判断
		assertEquals(webtest.isDisplayed("xpath=small[text()='请填写必填项目']"), false);
	
	}

	/**
	 * 测试用例25 筛选查看推荐链接
	 */
	@Test(priority = 25)
	public void filter_recom() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=静态页面设置");
		webtest.click("link=友情链接");
		webtest.selectByVisibleText("xpath=//select[@class='Filter recommendations']", "推荐链接");
		
		webtest.isDisplayed("id=seo-link-table_info");
	}

	/**
	 * 测试用例26 预览TAG信息
	 */
	@Test(priority = 26)
	public void view_tag() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=静态页面设置");
		webtest.click("link=TAG标签");
		webtest.click("xpath=//a[text()='预览' and position()=1");
		webtest.switchWindow(1);
		assertEquals(webtest.isDisplayed("link=站内搜索"), true);
		webtest.switchWindow(0);
	}

	/**
	 * 测试用例27 修改页面生成方式
	 */
	@Test(priority = 27)
	public void modify_page() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入SEO设置
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=静态页面设置");
		
		webtest.click("id=met_htmway-1");
		webtest.click("xpath=//button[(text()='保存')");
	}

	/**
	 * 测试用例28 点击购买新模板
	 */
	@Test(priority = 28)
	public void test_click_newMould() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入网站模板
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=商业模板");
		webtest.click("link=购买新模板");
		webtest.switchWindow(1);
		assertEquals(webtest.isDisplayed("link=免费试用"), true);
		webtest.switchWindow(0);
		
	}

	/**
	 * 测试用例29 点击更多模板
	 */
	@Test(priority = 29)
	public void test_click_more() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入网站模板
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=更多模板");
		webtest.switchWindow(1);
		assertEquals(webtest.isDisplayed("link=免费试用"), true);
		webtest.switchWindow(0);
	}

	/**
	 * 测试用例30 点击模板制作助手
	 */
	@Test(priority = 30)
	public void test_() {
		webtest.click("link=传统后台");

		webtest.click("xpath=//button[@class='btn btn-default no-prompt']");
//		点击进入网站模板
		webtest.click("xpath=//i[@class='iconfont-metadmin icon-metadmin-seo']");
		webtest.click("link=商业模板");
		webtest.click("link=模板制作助手");
		assertEquals(webtest.isDisplayed("link=免费插件"), true);

	}

	/**
	 * 退出，在执行完所有测试用例后进行
	 */
	@AfterMethod
	public void test_quit() {
		webtest.click("link=后台");
		webtest.click("xpath=//button[@class='btn btn-primary dropdown-toggle']");
		webtest.click("link=退出");
	}
}
